179. 最大数

179. 最大数

Similar Question

Solution Tips

方案一: 富途一面实现方案 , 贪心思想

我当时是认为从最高位开始逐位比较, 大的排序靠前. 如果较短则填充为最后一个字符. 比如: 30 和 3 比较, 实际上是 30 和 33 比较. 所以 3 比 30 更大. 330 是符合预期的结果

实际上我就是实现了一个 2 个数之间的 isBigger

但是我面试的时候, 收到了公共前缀、合并 k 个链表的影响, 老是往归并排序去想, 但是我自己根本不敢写归并排序, 导致每次都是逐个与 res 比较.

其实 isBigger 可以直接作为排序函数的 sorter 来使用. 利用原生的排序函数, 和我自己手写排序函数复杂度是一样的.

var largestNumber = function(nums) {
    nums.sort((x, y) => {
        let sx = 10, sy = 10;
        while (sx <= x) {
            sx *= 10;
        }
        while (sy <= y) {
            sy *= 10;
        }
        return '' + (sx * y + x) - ('' + (sy * x + y));
    })
    if (nums[0] === 0) {
        return '0';
    }
    return nums.join('');
};